The invention concerns the implementation of a control system function in a machine system.
A conceptual representation of a control system implementation is illustrated in FIG. 1. The control system operates with respect to an environment which is external to a computer system by sensing external circumstances and performing operations on the external environment in response. The control system is implemented in the computer system, which has an internal environment and internal circumstances which can be perceived by a control component embodying the control system's intention. The control component can act upon both internal and external environments. The "sense" and "act" operations, both internal and external, embrace hugely differing types of environments.
A control system functioning within the external environment of a factory, for example, will employ some means to sense pertinent physical properties of the factory process which is subject to control. Such physical properties might be temperature, pressure, fluid level, assembly line rate, color, and so on. The factory control system will have the ability to act on its external environment in ways also dictated by the nature of the process being controlled. Examples of such actions are the provision of electrical signals to affect the operation of electrical circuits such as relays and the provision of textual or graphical information for recognition and understanding by human users. Broadly, these are discernable indications of control system actions on the external environment.
The comprehensive variety of means for implementing a control system includes digital or analog circuitry ("hardware"), the programming of digital systems ("software"), or a combination of hardware and software.
In these days, the interactions between a computer and external users such as humans or electronic complexes are largely predetermined by specific programming. In effect, users can interact with a computer only in ways which are allowed by the software running in the computer. Adaptation to the needs and circumstances of a particular user or a particular external environment requires the building of new versions of old programs.
Many techniques have come into widespread practice to meet the problem of extreme variability in user needs and environments. One response has been a move toward adoption of standards for all aspects of computer systems, both hardware and software. Another response involves modular decomposition of software systems into component parts so that new versions of old programs may be more rapidly constructed by combining a number of new components with a number of old components from previous versions. While the use of these techniques has been significantly beneficial to the practice of software production, the benefit has generally been in the productivity of software programmers. The benefit, therefore, is necessarily limited by the size of the programmer population.
Another important technique which transcends this last limitation involves the construction of programs which permit specific predefined aspects of their behavior to be modified by a user without new programming. This technique does require the software programmer to define, at the time of program creation, the specific aspects which are to be made subject to user re-configuration. This additional effort pays off because it requires far less labor on the part of the programmer than that required to produce a large number of program versions. However, as computer systems become more complex, it is increasingly difficult to anticipate all dimensions in which a particular program may need to be adapted. Thus, despite industry's recognition of the problem and the adoption of a number of strategies aimed at overcoming it, the problem remains and, by some measures, becomes more grave every year.